home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 January / Macworld (1997-01).dmg / Shareware World / Graphics / CFG 2.3 (Shareware) / µCinema Converter / pstring.c < prev    next >
Text File  |  1994-04-10  |  2KB  |  82 lines

  1. /********************************************************************
  2.     µCinema Converter 1.0
  3.     module: pstring.c
  4.     October 1991 - April 1994
  5.     by John A. Schlack
  6.  *********************************************************************************/
  7.  
  8.  
  9. #include "pstring.h"
  10.  
  11.  
  12. #define TOUPPER(c)    ((short) ((((c)>='a') && ((c)<='z')) ? ((c)-32) : (c)))
  13.  
  14.  
  15. /* -------------------------------------------------------------------------------- */
  16.  
  17.  
  18. unsigned char * pstrcpy( unsigned char * dest, unsigned char * src )
  19. {
  20.     register short    i = *src, j;
  21.     unsigned char *    ret = dest;
  22.  
  23.     for (j=0; j<=i; j++)    /* must include size byte, so has equal sign */
  24.         *dest++ = *src++;
  25.     return dest;
  26. }
  27.  
  28.  
  29. /* -------------------------------------------------------------------------------- */
  30.  
  31.  
  32. void pstrsub( unsigned char * base, unsigned char * sub )
  33. {
  34.     Str255    temp;
  35.     short    i, j, k, len, slen;
  36.     
  37.     /* locate instance of # character */
  38.  
  39.     len = (short) base[0];
  40.     for (i=1; i<=len; i++)
  41.         if (base[i] == '#')
  42.             break;
  43.     if (i > len) return;
  44.  
  45.     /* save a copy of current string */
  46.     
  47.     pstrcpy( temp, base );
  48.     k = i + 1;                /* save location to copy rest of original string */
  49.     
  50.     slen = (short) sub[0];
  51.     for (j=1; (i<=255) && (j<=slen); i++, j++)
  52.         base[i] = sub[j];
  53.     
  54.     /* copy remainder of original string */
  55.     
  56.     for (; (i<=255) && (k<=len); i++, k++)
  57.         base[i] = temp[k];
  58.     if (i > 0) i--;
  59.     base[0] = (unsigned char) i;
  60. }
  61.  
  62.  
  63. /* --------------------------------------------------------------------------------- */
  64.  
  65.  
  66. short memcmpi( const void * buf1, const void * buf2, long len )
  67. {
  68.     unsigned char *    b1 = (unsigned char *) buf1;
  69.     unsigned char * b2 = (unsigned char *) buf2;
  70.     short            c1, c2, diff;
  71.     
  72.     for (; len>0L; len--, b1++, b2++)
  73.     {
  74.         c1 = TOUPPER( *b1 );
  75.         c2 = TOUPPER( *b2 );
  76.         diff = c1 - c2;
  77.         if (diff)
  78.             return diff;
  79.     }
  80.     return 0;
  81. }
  82.